WallControl 10 API Documentation

Introduction

There are two parts of the WallControl 10 system that have APIs:

Server - The server API allows for management of walls, such as starting/stopping walls, creating walls, etc.
Wall Server - The wall server API allows for manipulation of content on the wall, source management, opening/closing layouts, etc. There is one Wall Server (on a unique port) for each running wall.

REST API

There are two elements to the API, the first is the REST API, which is documented using Swagger. Swagger is an API exploration tool that is now optionally hosted within the WallControl 10 Server and WallControl 10 Wall Server processes. It enables you to discover which API calls are available, and even test them directly from the site. Swagger must first be enabled in the WallControl 10 Server by clicking Open Server Overview in the WallControl 10 Server tray icon popup, clicking the Settings tab, and enabling the "Enable Swagger UI" option. Once the server has been restarted, Swagger UI will be available at the following URLs:

Server - http://<wallserver>:19821/swagger
Wall Server - http://<wallserver>:<wallport>/swagger

Swagger also hosts an OpenAPI specification for the API, at the following URLs:

Server - http://<wallserver>:19821/swagger/v1/swagger.json
Wall Server - http://<wallserver>:<wallport>/swagger/v1/swagger.json

Note that it is not recommended to enable Swagger on a system other than for development purposes. Note that the API will still function with Swagger disabled.

These OpenAPI specifications can be used for automatic API client-generation in many programming languages. For C# the recommended client generator is NSwagStudio and for most other languages OpenAPI Generator can be used.

SignalR Hub

The second element of the API is the SignalR hub for the Server and Wall Servers. SignalR allows you to receive real-time updates to changes within the WallControl 10 system, such as windows being opened, layouts being added, changes to sources, etc. You can connect to SignalR using clients for C#, JavaScript, and Java.

Like the REST API, there are two SignalR hubs - one for the Server and one for the Wall Server. These are available at the following addresses:

Server - http://<wallserver>:19821/callbacks
Wall Server - http://<wallserver>:<wallport>/callbacks

SignalR Events

Wall Server

AllWindowsClosed All windows on the wall have been closed via the CloseAllWindows call
BulkDisplayRegionUpdate When a layout is opened this event is fired containing information for all windows on the wall
BulkSourceDefinitionUpdate Raised immediately after a layout is opened if it contains Application sources
DisplayRegionUpdated Raised when a display region is updated or changed in any way
LayoutAdded Raised after a new layout is added
LayoutOpened Raised after a layout has been successfully opened on the wall
LayoutUpdated Raised after an existing layout has been successfully updated
LayoutDeleted Raised after a layout has been deleted
SourceDefinitionAdded Raised after a new source has been added to the source definitions
SourceDefinitionDeleted Raised after an existing source has been removed from the source definitions
SourceDefinitionUpdated Raised after an existed source has been updated or changed
WallTemplateAdded Raised after a new template has been added
WallTemplateDeleted Raised after an existing template has been deleted
WallTemplateUpdated Raised after an existing template has been updated
WallTopologyChanged When the Wall Topology changes (screens moved, resolution changed etc) this event is fired
WindowClosed Raised after a WallControl 10 window has been closed on the wall

Desktop Server

ServerTopologyChanged When the Server Topology changes (screens moved, resolution changed etc) this event is fired
WallAdded Raised after a new wall has been created
WallUpdated Raised after an existing wall has been changed
WallDeleted Raised after an existing wall has been deleted

Source Properties

What follows is a guide to getting and setting Source and Instance Properties. For this example we recommend placing a single vision source on the wall via WC10 server. This arrangement will cause the wall to have one single window, with one single display region within the window, and one single vision source within the display region. This is a simple example to provide the user with a means to understand the API and to develop their own application.

Windows Controller

This controller has various API methods to get the windows displayed on the wall. You need to have the DisplayRegionId from one of these windows to continue.

The information returned from either will contain the Display Region ID

Sources Controller

Getting Source Properties
Two API calls here will get the current source instance and source definition properties of any display region.

Definition properties are properties against the source and require the Source Definition ID.
Instance properties are live properties of an instance of a source on the wall.
Use these api methods to get examples of source properties you are interested in. Each sourceProperty has a propertyType number – see included list to identify the property you are interested in.
The group type identifies the property as a instance/input/source property type, but this should not concern you at the next stage.
Finally, each property has a valueType which corresponds to the data type of the property. This cannot be changed and indicates which value in the model needs to be populated. See list included.

Setting Source Properties
There is one api method to set a source property, and the model data you provide will depend on which property you require to set

It is important to provide the Source Definition Id and the Source Instance Id if setting instance properties.
It is quite possible to take the model for the source property you are interested in from the results of the previous section (Getting Source Properties) and use that as the model required to set the property. To do this all you require to do is change the appropriate model value.
Please see the included examples of models that can be used to set the Pixel Format and Colour Space (Domain) properties

Examples

Setting Pixel Format

{ 
   "sourceDefinitionId": "sourceDefinitionGuid", 
   "sourceInstanceId": "sourceInstanceGuid", 
   "propertyType": 16,
   "valueType": 6,
   "valueEnum": { 
      "currentValue": newValue, 
      "defaultValue": 0, 
      "enumItems": [
      {
         "name": "Automatic",
         "value": 0 
      },
      { 
         "name": "RGB565",
         "value": 2
      },
      {
         "name": "RGB888", 
         "value": 3
      },
      {
         "name": "YUY2",
         "value": 6
      }]
   }
}

Setting Colour Space

{ 
   "sourceDefinitionId": "sourceDefinitionGuid",
    "sourceInstanceId": "sourceInstanceGuid",
    "propertyType": 12,
    "valueType": 6,
    "valueEnum": {
    "currentValue": newValue,
    "defaultValue": 0,
    "enumItems": [
    {
    "name": "RGB 709 FULL",
    "value": 0
    },
    {
    "name": "YUV 709 FULL",
    "value": 1
    },
    {
    "name": "YUV 601 FULL",
    "value": 2
    },
    {
    "name": "YUV 709 STUDIO",
    "value": 3
    },
    {
    "name": "YUV 601 STUDIO",
    "value": 4
    },
    {
    "name": "Automatic",
    "value": 5
    },
    {
    "name": "RGB 709 STUDIO",
    "value": 6
    },
    {
    "name": "YUV 2020 FULL",
    "value": 7
    },
    {
    "name": "YUV 2020 STUDIO",
    "value": 8
    },
    {
    "name": "RGB 601 FULL",
    "value": 9
    },
    {
    "name": "RGB 601 STUDIO",
    "value": 10
    },
    {
    "name": "RGB 2020 FULL",
    "value": 11
    },
    {
    "name": "RGB 2020 STUDIO",
    "value": 12
    }]
    }
    }

Enumerations

Property Type [propertyType : int]

Code

Description

0

Unknown

1

Name

2

Aspect Ratio

3

File Location

4

URL

5

Media Location

6

Resolution

7

Signal Type

8

Source Refresh Rate

9

Video Standard

10

Capture Refresh Rate

11

Deinterlace Modes

12

ColourDomain (Colour Space)

13

Link Rate

14

Rotation

15

Equalisation

16

Pixel Format

17

Brightness

18

Contrast

19

Rgb Reset

20

Hue

21

Saturation

22

Audio Enabled

23

Crop Dimensions

24

VNC Host Address

25

VNC Password

26

Application Path

27

Application Command Line

28

Application Icon

29

Application Window Title

30

Ganging

31

Cropping

32

Browser Refresh Interval

33

Browser Vertical Pixel Offset

34

Input Number

35

Remote Connection

36

Jitter

37

Cache

38

Authentication

39

Zoom

40

Browser Horizontal Pixel Offset

41

Transport Protocol

42

Password

Value Type [valueType : int]

Code

Type

Value

0

Bool

valueBool

1

Int

valueInt

2

String

valueString

3

Size

valueSize

4

Rectangle

valueRectangle

5

Cropping

valueCropping

6

Enum

valueEnum

7

Icon

valueIcon

8

Range

valueRange

9

Two State

valueTwoState

10

Authentication

valueAuthenticationInfo

11

Password

valuePasswordInfo

Group Type [groupType : int]

Code

Description

0

Instance

1

Input

2

Source